#ifndef ADDPLAYER_H_
#define ADDPLAYER_H_

#include "./Command.h"
#include "../GameLogic/Objects/GameObject.h"
#include "../GameLogic/Simulation.h"

#include "../Core/PvN.h"

namespace Commands {

/*
 * Dodaje do gry gracza i jego obiekt.
 */
class AddPlayer : public Command {
	unsigned char player_id_;
	char secret_;
	unsigned char team_;
	GameLogic::Objects::GameObject::IdType object_id_;
	bool is_local_;
public:

	/**
	 * Tworzy zdarzenie dodajace gracza.
	 * @param player_id Id dodawanego gracza
	 * @param secret Tajne id gracza sluzace do identyfikacji gracza przez serwer
	 * (wazne tylko, jezeli is_local == true)
	 * @param team Drozyna gracza
	 * @param object_id Id obiektu sterowanego przez gracza (obiekt zostanie utworzony wraz z graczem,
	 * znajdowac sie zas bedzie na spawn poincie)
	 * @param is_local Jezeli true, obiekt zostanie oznaczony jako sterowany przez gracza na tej maszynie.
	 */
	AddPlayer(
			unsigned char player_id,
			char secret,
			unsigned char team,
			GameLogic::Objects::GameObject::IdType object_id,
			bool is_local
	);

	void execute( GameLogic::Simulation* s );

	void serialize( std::ostringstream& );

};

} //namespace Commands

#endif /* ADDPLAYER_H_ */
